package com.tarena.lbs.content.exception;

import com.tarena.lbs.base.protocol.exception.BusinessException;
import com.tarena.lbs.base.protocol.model.Result;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * 全局异常处理器，统一处理业务异常和系统异常
 */
@RestControllerAdvice
public class GlobalExceptionHandler {

    /**
     * 处理业务异常（如分类名称重复）
     */
    @ExceptionHandler(BusinessException.class)
    public Result<Void> handleBusinessException(BusinessException e) {
        // 返回业务异常信息，状态码使用200，通过Result的fail标识错误
        return Result.fail(e.getCode(), e.getMessage());
    }

    /**
     * 处理其他系统异常
     */
    @ExceptionHandler(Exception.class)
    public Result<Void> handleSystemException(Exception e) {
        // 系统异常返回500错误码
        return Result.fail("500", "系统异常：" + e.getMessage());
    }
}
